package com.itheima.类加载与反射.反射.案例三;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class 反射实现 {
    public static void main(String[] args) throws IOException {
        /*注意点构造方法创建对象可能私有化:setAccessible(boolean)  暴力反射*/

        //获取系统加载类对象,cl.getParent();
        ClassLoader cl = ClassLoader.getSystemClassLoader();

        //根据系统加载类对象加载文件资源获取输入流
        InputStream input = cl.getResourceAsStream("prop.properties");

        //创建集合加载资源
        Properties prop = new Properties();
        prop.load(input);

        //1.根据Class获取.class文件对象
//        Class.forName("com.itheima.类加载与反射.反射.");

        //2.根据类对象获取构造方法Constructor<?>[] getDeclaredConstructors()

        //3.根据构造方法获取类的对象T newInstance(Object...initargs),setAccessible(boolean flag)

        //4.根据类对象获取成员方法Method[] getDeclaredMethods()

        // 5.根据类对象获取成员属性Field[] getFields()

        //6.根据对象,参数使用方法Object invoke(Object obj, Object... args)

        //7.根据对象参数使用属性void set(Object obj, Object value),Object get(Object obj)


    }
}
